TABLE OF CONTENTS

Introduction

Child Pricing based on Age bands is a new feature released on GO Distributor v4.7. 


Version Requirements


Version of GONeed to upgrade to GO Distributor V4.7 or above?Comments
  • GO V3 Distributor
  • GO V4 Pull Distributor

NoGO will calculate the price based on your request criteria, while GO Distributor calls live-check or Shopping ARI API.
  • GO V4 Push Distributor

Yes

Specific APIs require upgrading:

1. BookingUSB - Hotel Product
2.PushAvailabilityPeer - ARI Push


BookingUSB's Hotel Products API now includes the childRateType attribute, which allows GO Distributor v4.7 to support four business scenarios as follows. 


Child Rate TypeDescription
Normal

Hotels provide rates for a combination of adults and children.

ByAge

Hotels provide extra child pricing based on age bands.

Free

Hotels indicate children as free of charge to stay.

AsAdult

Hotels indicate children will be charged the same rate as adults for their stay.


Definition in BookingUSB - Hotel Product API


AttributeTypeDescription
childRateTypeenum

Enum: [ Normal, ByAge, Free, AsAdult ]


This text describes the different child rate types used with the OccupancyRate model. There are four options: 

  • Normal: This is the default option, where the occupancy rate is combined with adult and child rates without age band settings.
  • ByAge: Children will be charged based on their age band
  • Free: Children will be free of charge to stay.
  • AsAdult: Children will be charged the same rate as adults for their stay.
maxChildAgeintegerHotels specify the maximum age limit for children.



How to retrieve the childRateType indicator through the API?


GO Distributor can retrieve the indicator from BookingUSB's Hotel Product API, as shown in the example below:

{
    "hotelId": "GATHI",
    "hotelName": "This is a test hotel",
    "supplierId": "HILTON",
    "status": "Actived",
    "chainCode": "abc",
    "brandCode": "Waldorf",
    "longitude": 41.40338,
    "latitude": 2.17403,
    "city": "string",
    "country": "string",
    "state": "string",
    "address": [
        "AddressLine1",
        "AddressLine2"
    ],
    "phone": {
        "countryAccessCode": "string",
        "areaCityCode": "string",
        "phoneNumber": "string"
    },
    "settings": {
        "key1": "value1",
        "key2": "value2"
    },
    "ariType": "Daily",
    "timezone": "America/Los_Angeles",
    "rateType": "AmountBeforeTax",
    "maxChildAge": 17,
    "childRateType": "ByAge",
    "products": [...]
}


How to retrieve child pricing through the API?

  • For GO v4 Pull Distributor

There have been no changes made to the ShoppingEngine API. The API will calculate and return the correct child rates based on the requested criteria of child ages. For instance, if you want to shop the API for 1 adult with 2 children (4 and 8 years old), you can provide this information as your request example.

{
    "header": {
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "hotels": [
        {
            "supplierId": "HILTON",
            "hotelId": "GATHI",
            "status": "Actived"
        }
    ],
    "stayRange": {
        "checkin": "2022-01-01",
        "checkout": "2022-01-04"
    },
    "roomCriteria": {
        "roomCount": 2,
        "adultCount": 1,
        "childCount": 2,
        "childAges": [
            4,
            8
        ]
    }
}
  • For GO v4 Push Distributor
Important:
The new feature is supported in GO v4.7 version or above. Contact our GO help team if you would like to upgrade and receive the new child rate model.

GO will push extra child rates to distributors via AvailabilityPeer - ARI Push API by adding a new node extraChildRates to the ARI PUSH request for the OccupancyRate model.


Daily ARI example:

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "hotelId": "GATHI",
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-01-04"
    },
    "currency": "USD",
    "dailyAris": [
        {
            "roomId": "K1",
            "rateId": "BARB",
            "mealPlans": [
                "BB",
                "BB",
                "BB",
                "BB"
            ],
            "inventories": [
                9,
                0,
                9,
                9
            ],
            "rates": {
                "extraChildRates": [
                    {
                        "amountAfterTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "amountBeforeTax": [
                            40.00,
                            40.00,
                            40.00,
                            40.00
                        ],
                        "maxAge": 2,
                        "minAge": 0
                    },
                    {
                        "amountAfterTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "amountBeforeTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "maxAge": 8,
                        "minAge": 3
                    },
                    {
                        "amountAfterTax": [
                            70.00,
                            70.00,
                            70.00,
                            70.00
                        ],
                        "amountBeforeTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "maxAge": 17,
                        "minAge": 9
                    }
                ],
                "type": "OccupancyRate",
                "rates": [
                    {
                        "adultCount": 1,
                        "amountBeforeTax": [
                            502.19,
                            502.19,
                            502.19,
                            502.19
                        ],
                        "amountAfterTax": [
                            623.23,
                            623.23,
                            623.23,
                            623.23
                        ]
                    },
                    {
                        "adultCount": 2,
                        "amountBeforeTax": [
                            520.19,
                            520.19,
                            520.19,
                            520.19
                        ],
                        "amountAfterTax": [
                            641.23,
                            641.23,
                            641.23,
                            641.23
                        ]
                    }
                ]
            },
            "availStatuses": {
                "close": [
                    false,
                    false,
                    false,
                    false
                ],
                "minStayArrival": [
                    0,
                    2,
                    0,
                    0
                ],
                "maxStayArrival": [
                    0,
                    2,
                    0,
                    0
                ],
                "minStayThrough": [
                    0,
                    2,
                    0,
                    0
                ],
                "maxStayThrough": [
                    0,
                    2,
                    0,
                    0
                ],
                "minAdvanceDay": [
                    0,
                    2,
                    0,
                    0
                ],
                "maxAdvanceDay": [
                    365,
                    365,
                    365,
                    365
                ],
                "cta": [
                    false,
                    false,
                    false,
                    true
                ],
                "ctd": [
                    false,
                    false,
                    false,
                    true
                ],
                "fplos": [
                    "1111111",
                    "1001111",
                    "1000001",
                    "0000000"
                ]
            },
            "rateChangeIndicators": [
                true,
                false,
                true,
                false
            ]
        }
    ]
}

LOS ARI example:

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "hotelId": "GATHI",
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-01-04"
    },
    "currency": "USD",
    "losAris": [
        {
            "roomId": "K1",
            "rateId": "BARB",
            "los": 1,
            "mealPlans": [
                "BB",
                "BB",
                "RO",
                "BB"
            ],
            "inventories": [
                9,
                0,
                9,
                9
            ],
            "rates": {
                "extraChildRates": [
                    {
                        "amountAfterTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "amountBeforeTax": [
                            40.00,
                            40.00,
                            40.00,
                            40.00
                        ],
                        "maxAge": 2,
                        "minAge": 0
                    },
                    {
                        "amountAfterTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "amountBeforeTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "maxAge": 8,
                        "minAge": 3
                    },
                    {
                        "amountAfterTax": [
                            70.00,
                            70.00,
                            70.00,
                            70.00
                        ],
                        "amountBeforeTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "maxAge": 17,
                        "minAge": 9
                    }
                ],
                "type": "OccupancyRate",
                "rates": [
                    {
                        "adultCount": 1,
                        "amountBeforeTax": [
                            502.19,
                            502.19,
                            502.19,
                            502.19
                        ],
                        "amountAfterTax": [
                            623.23,
                            623.23,
                            623.23,
                            623.23
                        ]
                    },
                    {
                        "adultCount": 2,
                        "amountBeforeTax": [
                            502.19,
                            502.19,
                            502.19,
                            502.19
                        ],
                        "amountAfterTax": [
                            623.23,
                            623.23,
                            623.23,
                            623.23
                        ]
                    }
                ]
            }
        }
    ]
}

How does it work on GO v4.7 Push Distributor API?


1. Changes on BookingUSB - Hotel Product API:

  • 1. Remove fields: freeChildAge and childPriceRules
  • 2. Add fields: maxChildAge and childRateType.
{
    "hotelId": "100001",
    "hotelName": "This is a test hotel",
    "distributorId": "GTA",
    "status": "Actived",
    "chainCode": "Marriott",
    "brandCode": "Courtyard",
    "longitude": 41.40338,
    "latitude": 2.17403,
    "city": "string",
    "country": "string",
    "state": "string",
    "address": [],
    "phone": {},
    "settings": {},
    "ariType": "Daily",
    "timezone": "America/Los_Angeles",
    "rateType": "AmountBeforeTax",
    "maxChildAge": 17,
    "childRateType": "ByAge",
    "products": []
}


2. Add field on AvailabilityPeer - ARI Push API

  • Add field extraChildRates to reflect child pricing by age bands in the OccupancyRate model.
"rates": {
  "type": "OccupancyRate",
  "rates": [
    {
      "adultCount": 1,
      "amountBeforeTax": [
        100.00,
        100.00,
      ],
      "amountAfterTax": [
        120.00,
        120.00
      ]
    },
    {
      "adultCount": 2,
      "amountBeforeTax": [
        180.00,
        180.00,
      ],
      "amountAfterTax": [
        200.00,
        200.00
      ]
    }
  ],
  "extraChildRates": [
    {
      "minAge": "0",
      "maxAge": "2",
      "amountBeforeTax": [
        40.00,
        40.00,
      ],
      "amountAfterTax": [
        50.00,
        50.00
      ]
    },
    {
      "minAge": "3",
      "maxAge": "11",
      "amountBeforeTax": [
        50.00,
        50.00,
      ],
      "amountAfterTax": [
        60.00,
        60.00
      ]
    }
  ]
}


Notes:

  1. Age bands will be clearly defined and non-overlapping, for example, [0-2], [3-8], and [9-12] when maxChildAge is 12.
  2. Both minAge and maxAge are closed intervals, where minAge will be greater than or equal to 0, and maxAge should be less than or equal to maxChildAge.
  3. Child pricing will be based on the same amount type (AAT/ABT) as the room.
  4. The childCount field has been removed from the rate combinations of adults and children when pushing ARI with extra child rates .